//Cette erreur n'est pas significative et l'application compile et fonctionne quand même

package miagetest.client.commands;

import dao.EntityAlreadyExistsException;
import dao.InexistantEntityException;
import entities.Produit;
import gestion.GestionnaireRemote;
import java.io.PrintStream;
import java.util.List;
import miagetest.client.interfaces.ShellCommand;
import miagetest.client.interfaces.ShellConstantes;
import miagetest.client.interfaces.ShellContext;

/**
 * Commandes liées aux produits
 * @author Alex
 */
public class ProduitCommandImpl implements ShellCommand {

    private ShellContext context = null;

    public ProduitCommandImpl(ShellContext context) {
        this.context = context;
    }

    @Override
    public String getName() {
        return "produit";
    }

    @Override
    public String getUsage() {
        return "produit <-remove reference> <-create reference nom prix idCategorie>";
    }

    @Override
    public String getShortDescription() {
        return "afficher la liste des produits, créer ou supprimer un produit";
    }

    @Override
    public void execute(String cmdline, PrintStream out, PrintStream err) {
        GestionnaireRemote gestionnaire = (GestionnaireRemote) context.getVar(ShellConstantes.GESTIONNAIRE);

        String[] cmdwords = cmdline.split(" ");

        try {
            if (cmdwords.length == 1) //pas de param
            {
                List<Produit> produits = (List<Produit>) gestionnaire.getAll(Produit.class);
                for (Produit produit : produits) {
                    out.println((produit.getReference()) + " " + produit.getNom() + " " + produit.getPrix() + " " + produit.getCategorie().getLibelle());
                }
            } else if (cmdwords.length >= 3) //est-ce que le param est bien renseigné
            {
                String cmdParamName = cmdwords[1];
                String cmdParamValue = cmdwords[2];

                if (cmdParamName.equals("-remove")) {

                    gestionnaire.supprimerProduit(Integer.parseInt(cmdParamValue));
                    out.println("Produit supprimé avec succès.");
                    
                } else if (cmdParamName.equals("-create")) {

                    Integer reference = Integer.parseInt(cmdwords[2]);
                    String nom = cmdwords[3];
                    Double prix = Double.parseDouble(cmdwords[4]);
                    Integer idCategorie = Integer.parseInt(cmdwords[5]);

                    gestionnaire.creerProduit(reference, nom, prix, idCategorie);
                    out.println("Votre produit a été ajouté avec succès.");
                }
            }
        } catch (EntityAlreadyExistsException e) {
            err.println(e.toString());
        } catch (InexistantEntityException e) {
            err.println(e.toString());
        } catch (java.lang.ArrayIndexOutOfBoundsException e) {
            err.println("Erreur dans le nombre de paramètres saisis.");
        }
    }
}
